

xxxxxxxxxx71Shape s1 = new Circulo(5);2System.out.println(s1);3System.out.println(s1.area());4
5Circle c1 = (Circle)s1; 6System.out.println(c1); 7System.out.println(c1.Area());¿Qué imprime por pantalla la línea System.out.println(s1.area( ));?
Imprime el área del círculo s1 cuyo radio es 5.
¿Es valida la instrucción Circle c1 = (Circle)s1;?
Sí, es válida. Se hace una operación de downcasting de tipo válida.
Un diagrama UML permiten describir un sistema desde distintas perspectivas. Los diagramas, en general, pueden ser un diagrama estructural o un diagrama de comportamiento. Los diagramas estructurales son de clases, de componentes o de objetos. Los diagramas dinámicos, por otra parte, pueden ser de actividad, de estados, de interacción o de casos de uso. Los diagramas de interacción son importantes porque, a su vez, pueden ser de comunicación y de secuencia.
Realice un modelo de clases UML del dominio anterior.

xxxxxxxxxx91public interface Runnable{ 2 public void run()3}4
5public class Tarea implements Runnable {6 public void run(){7 // implementación de la tarea8 }9}
Sí, el método run es polimórfico porque la clase sobrescribe un método de una clase abstracta a la cual está ligado.
xxxxxxxxxx41if(userInput.equals(“student”)) 2 s2 = new Student(...);3else4 s2 = new GradStudent(...);¿Qué tipo de objeto tendrá s2 en la ejecución del programa si user Input tiene cadena “student”?
S2 será de tipo Student.
¿El programa está usando ligadura dinámica o estática? Razona su respuesta.
Está usando ligadura dinámica porque el tipo de dato no se conoce en tiempo de compilación.

¿Los métodos insertar, borrar y buscar son polimórficos?
Si, ya que cada uno tiene su propia implementación de los métodos.
¿Una EstructuraDinámica según este modelo es polimórfica?
Si, porque puede ser una ListaEnlazada o un ArbolBinario.
¿Una aplicación que trabajase con este modelo de estructuras dinámicas podría
intercambiar una lista enlazada por un árbol?
Si podría.


xxxxxxxxxx181public class Almacen{2 private int n = 10;3 private DiscosSSD [n] discos_ssd;4 private DiscosMecanicos [n] discos_mecanicos;5 6 public int totalCapacidadDiscos () {7 int acum1,acum2;8 for ( int i = 0; i < n; i++){9 if discossd[i] != null10 acum1 = acum1+discos_ssd.capacidad();11 }12
13 for ( int i = 0; i < n; i++){14 if discosmecanicos[i] != null15 acum2 = acum2 + discos_mecanicos.tam();16 }17 retrun acum1 + acum2;18}xxxxxxxxxx121public class Almacen{2 private int n = 10;3 private Disco [n] discos;4 5 public int totalCapacidadDiscos (){6 private acum;7 for(i = 0; i < n; i++){8 acum = acum + discos[i].capacidad();9 }10 return acum;11 }12}

xxxxxxxxxx171public class Punto2D{2 private double x;3 private double y;4 5 public double Punto2D (double x, double y){6 this.x = x;7 this.y = y;8 }9 10public class Punto3D{11 private double z;12 13 public double Punto3D (double x, double y, double z){14 super(x,y);15 this.z = z;16 }17}
xxxxxxxxxx191public class Punto2D{2 private double x;3 private double y;4 5 public double Punto2D (double x, double y){6 this.x = x;7 this.y = y;8 }9 10 public mover (double d){11 x = x + d;12 y = y + d;13 }14 15 mover (double xn, double yn){16 x = xn;17 y = yn;18 }19}
xxxxxxxxxx181public class Punto3D{2 private double z;3 4 public double Punto3D (double x, double y, double z){5 super(x,y);6 this.z = z;7 }8 9 public mover (double d){10 super.mover(d);11 z = z + d;12 }13 14 mover (double xn, double yn){15 super.mover(xn,yn);16 z = yn;17 }18}